فرض کن توی یه انبار پر از جعبه هستی و میخوای فقط جعبههایی که اسمشون با حرف خاصی شروع میشه یا پسوند خاصی دارن رو پیدا کنی. توی لینوکس، با استفاده از کاراکترهای ویژه (Wildcards) میتونی دقیقاً همین کار رو بکنی! اینجا با سه تا از پرکاربردترینهاش آشنا میشیم.
در این چالش، با استفاده از دستورات پایه و کاراکترهای ویژه (Wildcards)، فایلها و دایرکتوریها را مدیریت میکنیم. ابزارهای اصلی این جلسه عبارتند از:
cd → جابجایی بین دایرکتوریهاls → لیست کردن فایلها و دایرکتوریهاecho * → نمایش سادهتر لیست فایلها*، ? و []*) — هر تعداد کاراکتر
* به معنای صفر یا چند کاراکتر است.
توضیح: *.txt همه فایلهایی که به .txt ختم میشوند را نمایش میدهد.
توضیح: *.sh همه فایلهایی که به .sh ختم میشوند (اسکریپتهای شل) را نمایش میدهد.
توضیح: c*.*sh فایلهایی که با c شروع میشوند، یک نقطه دارند و به sh ختم میشوند.
?) — یک کاراکتر
? به معنای دقیقاً یک کاراکتر است.
توضیح: b?t فایلهایی که با b شروع میشوند، یک کاراکتر دلخواه در وسط و با t ختم میشوند.
توضیح: b??t فایلهایی که با b شروع میشوند، دو کاراکتر دلخواه در وسط و با t ختم میشوند.
[]) — مجموعه کاراکترها
[] به معنای یکی از کاراکترهای داخل کروشه است.
توضیح: b[eio]t فایلهایی که با b شروع میشوند، کاراکتر وسط یکی از e، i یا o باشد و با t ختم میشوند.
توضیح: b[eil]t فایلهایی که با b شروع میشوند، کاراکتر وسط یکی از e، i یا l باشد و با t ختم میشوند. (bit و bet وجود دارند، اما bot وجود ندارد چون o در کروشه نیست).
میتوانید چندین Wildcard را با هم ترکیب کنید تا جستجوی دقیقتری داشته باشید.
توضیح: ترکیب * و . و *sh برای پیدا کردن فایلهایی که با c شروع میشوند و پسوند .sh دارند.
cd با Wildcard
توضیح: cd te?? به دایرکتوری میرود که نام آن با te شروع میشود و دو کاراکتر بعدی دلخواه است (مثلاً test).
اگر چندین دایرکتوری با این الگو وجود داشته باشد، cd به اولین مورد میرود. برای انتخاب دقیقتر، از الگوی مناسبتر استفاده کنید.
| Wildcard | معنی | مثال | خروجی |
|---|---|---|---|
* |
صفر یا چند کاراکتر | *.txt |
همه فایلهای با پسوند .txt |
? |
دقیقاً یک کاراکتر | b?t |
bat, bet, bit, bot |
[] |
یکی از کاراکترهای داخل کروشه | b[eio]t |
bet, bit, bot |
حالا نوبت شماست! فرض کنید در دایرکتوری ~/Desktop هستید و فایلهای زیر را دارید:
file1.txtfile2.txtfile3.logfile4.shmyfile.txtmyfile.shبا استفاده از Wildcardها، دستورات زیر را بنویسید:
.txt.file شروع میشوند.file شروع میشوند و پسوند .txt دارند.ls *.txt → همه فایلهای .txtls file* → فایلهایی که با file شروع میشوندls file*.txt → فایلهایی که با file شروع و به .txt ختم میشوندls ?????.txt → فایلهایی با ۵ کاراکتر قبل از .txt